﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FeiYang
{
    public delegate bool 镖车监控事件_(挂机人物_ 人物);
    public class 镖车监控_
    {
        public 镖车监控_(挂机人物_ 人物)
        {
            this.人物 = 人物;
            this.镖车监控线程 = new 线程_(监控, false, "镖车监控线程", true);
        }
        public 挂机人物_ 人物 { get; private set; }
        public 线程_ 镖车监控线程 { get; private set; }
        public event 镖车监控事件_ 镖车监控;
        public bool 监控()
        {
            var 镖车任务 = 图像_.查找文字("立即前往", 29, 112, 115, 143);
            if (镖车任务.X != -1)
            {
                镖车监控(人物);
            }
            其他_.延迟(其他_.时长_200);
            return true;
        }
    }

    public delegate bool 异常监控事件_();

    public class 异常监控_
    {
       public 异常监控_(挂机人物_ 人物)
        {
            this.人物 = 人物;
            this.异常监控线程 = new 线程_(监控, true, "异常监控线程", true);
        }
        public 挂机人物_ 人物 { get; private set; }
        public 线程_ 异常监控线程 { get; private set; }
        public event 异常监控事件_ 超时事件;
        public event 异常监控事件_ 异地登录事件;
        public event 异常监控事件_ 断开连接事件;

        public bool 监控()
        {
            var 超时 = 图像_.查找文字(574, 352, 705, 378, s => s.Contains("连接") && s.Contains("服") && s.Contains("超时"));
            if (超时.X != -1)
            {
                超时事件();
            }
            var 其他位置登录 = 图像_.查找文字(448, 341, 705, 364, s=>s.Contains("账号") && s.Contains("其他位置") && s.Contains("登录"));
            if (其他位置登录.X != -1)
            {
                异地登录事件();
            }
            var 掉线1 = 图像_.查找文字(545, 351, 735, 377, s => s.Contains("连接断开") && s.Contains("重新尝试"));
            if (掉线1.X != -1)
            {
                断开连接事件();
            }
            var 掉线2 = 图像_.查找文字(525, 351, 750, 380, s => s.Contains("掉线") && s.Contains("重新登录"));
            if (掉线2.X != -1)
            {
                断开连接事件();
            }
            其他_.延迟(其他_.时长_200);
            return true;
        }
    }
}
